import router from '@/router'
import { userLoginUserInfo } from '@/stores/userLoginUserInfo.ts'
import { message } from 'ant-design-vue'

// 定义一个参数判断是否是第一次获取用户信息
let firstFetchLoginUser = true
/**
 * 路由守卫，用于判断用户是否登录，并跳转到登录页面
 */
router.beforeEach(async (to, from, next) => {
  const currentUser = userLoginUserInfo()
  let loginUser = currentUser.loginUser
  // 确保在页面刷新的时候，页面首次加载的时候等待后端返回用户的信息后再进行权限的校验
  if (firstFetchLoginUser) {
    await currentUser.fetchLoginUser()
    loginUser = currentUser.loginUser
    //在执行第一次获取后就将变量改为false
    firstFetchLoginUser = false
  }
  const toUrl = to.fullPath
  if (toUrl.startsWith('/admin')) {
    if (!loginUser || loginUser.userRole !== 'admin') {
      message.error('无权限')
      // next()表示执行下一步，无参数就是放行
      next(`/user/login`)
      return
    }
  }
  next()
})
